#include <iostream>
using namespace std;

/*
    封装一个字符串类。该类中有如下成员方法(公有的):
        可以把字符串中小写字符转成大写
        可以逆序存放字符串
        剔除字符串中非英文字符

*/
class Mystring
{
public:
    Mystring(string str)
    {
        m_str = str;
    }
    string lowerToUpper();
    string reversedOrder();
    string deleteNonEnglish();

private:
    string m_str;
};

// 小写字母转换成大写字母
string Mystring::lowerToUpper()
{
    for (int i = 0; i < m_str.size(); i++)
    {
        if (islower(m_str.at(i)) != 0)
        {
            char temp = m_str.at(i);
            m_str.at(i) = toupper(temp);
        }
    }
    return m_str;
}

// 逆序存放字符串
string Mystring::reversedOrder()
{
    string temp;
    for (int i = m_str.size() - 1; i >= 0; i--)
    {
        temp.push_back(m_str.at(i));
    }
    m_str.swap(temp);
    return m_str;
}

// 剔除字符串中非英文字符
string Mystring::deleteNonEnglish()
{
    for (int i = 0; i < m_str.size(); i++)
    {
        // 判断是否为英文字符
        if (!isalpha(m_str.at(i)))
        {
            m_str.erase(i, 1);
            i--;
        }
    }
    return m_str;
}

int main()
{
    Mystring str("hello world!!xxx");
    string str1 = str.lowerToUpper();
    cout << str1 << endl;
    string str2 = str.reversedOrder();
    cout << str2 << endl;
    string str3 = str.deleteNonEnglish();
    cout << str3 << endl;

    return 0;
}